%% @author Final
%% @doc @todo Add description to export.


-module(export).

%% ====================================================================
%% API functions
%% ====================================================================
-export([writecsv/9,prepare/0,writeHead/1]).



%% ====================================================================
%% Internal functions
%% ====================================================================

%% Erstellt eine CSV-Datei
%% Pfad: C:/maxteilsummeTest.csv
writecsv(Anzahl, AlgoName, Maxteilsumme,Index1,Index2,ZeitMitZugriff,ZeitohneZugriff,Zugriffe,Matrixzugriffe) -> 
	{ok,Device} = file:open("C:/maxteilsummeTest.csv", [append]),
	Text = lists:concat([Anzahl,";",AlgoName,";",Maxteilsumme,";",Index1,";",Index2,";",ZeitMitZugriff,";"
						,ZeitohneZugriff,";",Zugriffe,";",Matrixzugriffe,"\n"]),
	file:write(Device, Text),
	file:close(Device).

% schreibt den Tabellenkopf
writeHead(Folge)->writecsv("Anzahl", "Algorithmus", "Maxteilsumme", "Index1", "Index2", "ZeitMitZugriff", "ZeitohneZugriff", "Zugriffe","Matrixzugriffe"),
					write_maxteilsumme3(Folge).

% schreibt maxteilsumme3 eintrag 
write_maxteilsumme3(Folge)->
	
		T1 = now(),
		maxteilsumme3:auessereschleife(Folge),
		T2 = now(),
		ZeitohneZugriff = timer:now_diff(T2, T1),
		%timer:tc funktioniert nicht!
		%timer:tc(maxteilsumme3,aeussereschleife,[Folge]),
		T3 = now(),
		{{Maxteilsumme,{Index1,Index2}},Zugriffe} = maxteilsumme3zugr:aeussereschleife(Folge),
		T4 = now(),
		ZeitMitZugriff = timer:now_diff(T3, T4),
	
	writecsv(length(Folge), "MaxTeilsumme3", Maxteilsumme, Index1, Index2, trunc(ZeitMitZugriff*0.001), trunc(ZeitohneZugriff*0.001), Zugriffe,"%"),
	write_maxteilsumme2(Folge).


write_maxteilsumme2(Folge)->
	
		T1 = now(),
		maxteilsumme2:maxTeilsumme2(Folge),
		T2 = now(),
		ZeitohneZugriff = timer:now_diff(T2, T1),
		
		T3 = now(),
		{Maxteilsumme,{Index1,Index2},Zugriffe, ZugriffeMatrix} = maxteilsumme2zugr:maxSumme(Folge),
		T4 = now(),
		ZeitMitZugriff = timer:now_diff(T3, T4),
		
	%{ZeitohneZugriff,_} = timer:tc(maxteilsummeMatrix,maxSumme,[Folge]),
	%{ZeitMitZugriff,{Maxteilsumme,{Index1,Index2},Zugriffe,Matrixzugriffe}} = timer:tc(maxteilsummeMatrixMitZugriff,maxSumme,[Folge]),
	writecsv(length(Folge), "MaxTeilsummeMatrix", Maxteilsumme, Index1, Index2, trunc(ZeitMitZugriff*0.001), trunc(ZeitohneZugriff*0.001), Zugriffe,ZugriffeMatrix),
	eintrag_maxteilsummeRek(Folge).

eintrag_maxteilsummeRek(Folge)->
		T1 = now(),
		maxteilsummeRek:maxteilsummeRek(Folge),
		T2 = now(),
		ZeitohneZugriff = timer:now_diff(T2, T1),
		T3 = now(),
		{Maxteilsumme,Index1,Index2,Zugriffe} = maxteilsummeRekzugr:maxteilsummeRek(Folge),
		T4 = now(),
		ZeitMitZugriff = timer:now_diff(T3, T4),
	
	writecsv(length(Folge), "MaxTeilsummeRekursiv", Maxteilsumme, Index1, Index2, trunc(ZeitMitZugriff*0.001), trunc(ZeitohneZugriff*0.001), Zugriffe,"%").%,
	%eintrag_maxteilsumme1(Folge).

eintrag_maxteilsumme1(Folge)->
	{ZeitohneZugriff,_} = timer:tc(maxteilsumme1, maxTeilsumme1, [Folge]),
	{ZeitMitZugriff,{Maxteilsumme,Index1,Index2,Zugriffe}} = timer:tc(maxteilsumme1mitzugriff, maxTeilsumme1, [Folge]),
	writecsv(length(Folge), "MaxTeilsumme1", Maxteilsumme, Index1, Index2, trunc(ZeitMitZugriff*0.001), trunc(ZeitohneZugriff*0.001), Zugriffe,"%").


prepare() -> writecsv(integer_to_list(10), "maxteiltest", integer_to_list(42), integer_to_list(4), integer_to_list(12),integer_to_list(4), integer_to_list(4), integer_to_list(4),integer_to_list(2)).